/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.vdab.servlets;

import be.vdab.dao.KlantDAO;
import be.vdab.entiteit.Klant;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author tom.vanpoucke
 */
@WebServlet("/nieuweklant.htm")
public class NieuweKlantServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String VIEW = "/WEB-INF/JSP/nieuweklant.jsp";
    private static final String FOUT_VIEW = "/nieuweklant.htm";
    private static final String SUCCES = "/voorstellingen/inlog.htm";
    private static final String REDIRECT_URL = "/welkom.htm";
    private static final KlantDAO klantDAO = new KlantDAO();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(false);
        if(session != null){
            @SuppressWarnings("unchecked")
            List<String> fouten = (List<String>) session.getAttribute("fouten");
            session.removeAttribute("fouten");
            request.setAttribute("fouten", fouten);
            RequestDispatcher dispatcher = request.getRequestDispatcher(VIEW);
            dispatcher.forward(request, response);
        }
        else{
            response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + REDIRECT_URL));
        }
        
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(false);
        if(session != null){
            @SuppressWarnings("unchecked")
            List<String> fouten = new ArrayList<String>();
            
            String voornaam = request.getParameter("voornaam");
            if(voornaam == null || voornaam.isEmpty()){
                fouten.add("voornaam niet ingevuld.");
            }
            
            String familienaam = request.getParameter("familienaam");
            if(familienaam == null || familienaam.isEmpty()){
                fouten.add("familienaam niet ingevuld.");
            }
            String straat = request.getParameter("straat");
            if(straat == null || straat.isEmpty()){
                fouten.add("straat niet ingevuld.");
            }
            String huisnr = request.getParameter("huisnr");
            if(huisnr == null || huisnr.isEmpty()){
                fouten.add("huisnummer niet ingevuld");
            }
            String postcode = request.getParameter("postcode");
             if(postcode == null || postcode.isEmpty()){
                fouten.add("postcode niet ingevuld.");
            }           
            String gemeente = request.getParameter("gemeente");
             if(gemeente == null || gemeente.isEmpty()){
                fouten.add("gemeente niet ingevuld.");
            }           
            String gebruikersnaam = request.getParameter("gebruikersnaam");
            if(gebruikersnaam == null || gebruikersnaam.isEmpty()){
                fouten.add("gebruikersnaam niet ingevuld.");
            }
            else{
               if(klantDAO.existKlant(gebruikersnaam) == 1){
                 fouten.add("gebruikersnaam bestaat al");
               }  
            }
            String paswoord = request.getParameter("paswoord");
            if(paswoord == null || paswoord.isEmpty()){
                fouten.add("paswoord niet ingevuld.");
            }            
            String paswoord2 = request.getParameter("paswoord2");
            if(paswoord2 == null || paswoord2.isEmpty()){
                fouten.add("herhaal paswoord niet ingevuld.");
            }
            
            if(paswoord != null && paswoord2 != null){
                if(!paswoord.equals(paswoord2)){
                    fouten.add("herhaal paswoord niet gelijk aan paswoord");
                }
            }
            
            if(fouten.isEmpty()){
                Klant klant = new Klant(voornaam, familienaam, straat, huisnr, postcode, gemeente, gebruikersnaam, paswoord);
                klantDAO.createKlant(klant);
                klant = klantDAO.findKlant(gebruikersnaam, paswoord);
                session.setAttribute("klant", klant);
                response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + SUCCES));
            }
            else{
                session.setAttribute("fouten", fouten);
                response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + FOUT_VIEW));
            }
        }
    }

}
